817B - Makes And The Product - CodeForces Solution


combinatorics implementation math sortings *1500

Please click on ads to support us..

Python Code:

import math

def CountFrequency(my_list):
    freq = {}
    for item in my_list:
        if (item in freq):
            freq[item] += 1
        else:
            freq[item] = 1
    return freq
        
 
n=int(input())
l=sorted(list(map(int,input().split())))
freq=CountFrequency(l)
v=[]
for value in freq.items():
    v.append(value[1])
if v[0]>=3:
    print(math.comb(v[0],3))
elif v[0]==1 and v[1]>1:
    print(math.comb(v[0],1)*math.comb(v[1],2))
elif v[0]==2 and v[1]>=1:
    print(math.comb(v[0],2)*math.comb(v[1],1))
else:
    print(math.comb(v[0],1)*math.comb(v[1],1)*math.comb(v[2],1))

C++ Code:

#include <bits/stdc++.h>
#define pii pair<int,int>
#define int long long 
#define ios ios::sync_with_stdio(false),cin.tie(0);
#define multi int t;cin>>t;for(int i=1;i<=t;++i)solve()
#define rep(i,a,b) for(int i=a;i<=b;++i)


using namespace std;
using i64 = long long;
const int N = 1e5 + 10;
int c[N][4];

void solve() {
	int n;
	cin >> n;
	vector<int> a(n + 1);
	map<int, int> mp;
	rep(i, 1, n) cin >> a[i];
	sort(a.begin() + 1, a.end());
 	rep(i, 1, n) mp[a[i]]++;

 	if(a[1] != a[2] && a[2] != a[3]) {
 		cout << 1ll * mp[a[1]] * mp[a[2]] * mp[a[3]] << "\n"; 
 	}else if(a[1] == a[2] && a[2] == a[3]) {
 		cout << c[mp[a[1]]][3] << "\n";
 	}else if(a[1] == a[2]) {
 		cout << c[mp[a[1]]][2] * mp[a[3]] << "\n";
 	}else if(a[3] == a[2]) {
		cout << c[mp[a[2]]][2] * mp[a[1]] << "\n";
 	}
}

signed main() {
	ios;
	c[1][0] = c[1][1] = 1;
    for (int i = 2; i < N; i++){
        c[i][0] = 1;
        for (int j = 1; j < 4; j++)
            c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]);
    }
	solve();
	//multi;
	return 0;
}


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST